/* 
 * File:   Extractor.h
 * Author: guilhermemg
 *
 * Created on 19 de Fevereiro de 2012, 18:44
 */

#ifndef EXTRACTOR_H
#define	EXTRACTOR_H
#include <vector>
#include <string>
#include <cv.h>
#include "algorithm/Algorithm.h"
#include <file/Table.h>
#include "iterator/Iterator.h"
#include <iostream>
#include "iterator/Iterator.h"

#include "loader images/Loader.h"
#include "familysAlgorithms/average/AveragePixelHue.h"
#include "familysAlgorithms/average/AveragePixelSaturation.h"
#include "familysAlgorithms/rule of thirds/RuleOfThirdsBasedOnHue.h"
#include "familysAlgorithms/rule of thirds/RuleOfThirdsBasedOnSaturation.h"
#include "familysAlgorithms/rule of thirds/RuleOfThirdsBasedOnValue.h"
#include "size and aspect ratio/SizeFeature.h"
#include "size and aspect ratio/AspectRatio.h"
#include "file/Table.h"
#include "familysAlgorithms/average/AveragePixelIntensity.h"

using namespace std;

class Extractor {
public:
    Extractor(vector<string> imgs, string pathTable);
    Extractor(const Extractor& orig);
    virtual ~Extractor();
    void run();
    void setPathTable(string pathT);
    void setImagesPaths(vector<string> imgs);
    vector<string> getImagesPaths();
    //static Extractor* getInstance(vector<IplImage*> imgs, string pathTable);
    string getPathTable();
    
    vector<string> imagesPaths;
    vector<Algorithm*> algorithms;
private:
    string pathT;
    //static Extractor* uniqueInstance;
};

#endif	/* EXTRACTOR_H */

